#Step 1: Load libraries for the U-net Model
import numpy as np
import os
import cv2
import skimage.io as io
import skimage.transform as trans
import numpy as np
from keras.models import Model
from keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D, concatenate, Conv2DTranspose, BatchNormalization, Dropout, Lambda
from tensorflow.keras.models import *
from tensorflow.keras.layers import *
from tensorflow.keras.optimizers import *
from tensorflow.keras.callbacks import ModelCheckpoint, LearningRateScheduler
from tensorflow.keras import backend as keras
#from tensorflow import keras
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import skimage.io as io
import skimage.transform as trans
import matplotlib.pyplot as plt
import scipy.misc as sc
import glob
from patchify import patchify, unpatchify
# Base UNET Model
def multi_unet_model(n_classes=3, IMG_HEIGHT=256, IMG_WIDTH=256, IMG_CHANNELS=3):
inputs = Input((IMG_HEIGHT, IMG_WIDTH, IMG_CHANNELS))
s = Lambda(lambda x: x / 255)(inputs) #No need for this if we normalize our inputs beforehand
#s = inputs
#Contraction path
c1 = Conv2D(16, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(s)
c1 = Dropout(0.1)(c1)
c1 = Conv2D(16, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c1)
p1 = MaxPooling2D((2, 2))(c1)
c2 = Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(p1)
c2 = Dropout(0.1)(c2)
c2 = Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c2)
p2 = MaxPooling2D((2, 2))(c2)
c3 = Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(p2)
c3 = Dropout(0.2)(c3)
c3 = Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c3)
p3 = MaxPooling2D((2, 2))(c3)
c4 = Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(p3)
c4 = Dropout(0.2)(c4)
c4 = Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c4)
p4 = MaxPooling2D(pool_size=(2, 2))(c4)
c5 = Conv2D(256, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(p4)
c5 = Dropout(0.3)(c5)
c5 = Conv2D(256, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c5)
#Expansive path
u6 = Conv2DTranspose(128, (2, 2), strides=(2, 2), padding='same')(c5)
u6 = concatenate([u6, c4])
c6 = Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(u6)
c6 = Dropout(0.2)(c6)
c6 = Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c6)
u7 = Conv2DTranspose(64, (2, 2), strides=(2, 2), padding='same')(c6)
u7 = concatenate([u7, c3])
c7 = Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(u7)
c7 = Dropout(0.2)(c7)
c7 = Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c7)
u8 = Conv2DTranspose(32, (2, 2), strides=(2, 2), padding='same')(c7)
u8 = concatenate([u8, c2])
c8 = Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(u8)
c8 = Dropout(0.1)(c8)
c8 = Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c8)
u9 = Conv2DTranspose(16, (2, 2), strides=(2, 2), padding='same')(c8)
u9 = concatenate([u9, c1], axis=3)
c9 = Conv2D(16, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(u9)
c9 = Dropout(0.1)(c9)
c9 = Conv2D(16, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c9)
outputs = Conv2D(n_classes, (1, 1), activation='softmax')(c9)
model = Model(inputs=[inputs], outputs=[outputs])
#model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
#model.summary()
return model
## Run for each image and its corresponding mask
train_image_path = original_data_dir + "Train_Image/" +"img5.png"
train_mask_path = original_data_dir + "Train_Mask/" +"img5_mask.png"
large_image = cv2.imread(train_image_path)
large_mask = cv2.imread(train_mask_path)
patches_mask = patchify(large_mask, (256, 256,3), step=256) #Step=256 for 256 patches means no overlap
patches_img = patchify(large_image, (256, 256,3), step=256) #Step=256 for 256 patches means no overlap
for i in range(patches_img.shape[0]):
for j in range(patches_img.shape[1]):
single_patch_img = patches_img[i,j,:,:,:]
single_patch_mask = patches_mask[i,j,:,:,:]
if len(list(np.unique(single_patch_mask))) > 1:
print("Unique value in patches : ", np.unique(single_patch_mask))
cv2.imwrite(original_data_dir + 'patches_unique/images/' + 'img5_' + '_' + str(i)+str(j)+ ".png", single_patch_img[0])
cv2.imwrite(original_data_dir + 'patches_unique/masks/' + 'img5_mask_' + '_' + str(i)+str(j)+ ".png", single_patch_mask[0])
SIZE_X = 256
SIZE_Y = 256
IMG_CHANNELS = 3
n_classes = 3 #Number of classes for segmentation
train_img_path = "/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/patches_unique/images"
train_mask_path = "/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/patches_unique/masks"
#Capture training image info as a list
train_images = []
for img_path in sorted(glob.glob(os.path.join(train_img_path, "*.png"))):
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
train_images.append(img)
#Convert list to array for machine learning processing
train_images = np.array(train_images)
#Capture mask/label info as a list
train_masks = []
for mask_path in sorted(glob.glob(os.path.join(train_mask_path, "*.png"))):
mask = cv2.imread(mask_path)
mask = cv2.cvtColor(mask, cv2.COLOR_BGR2RGB)
#mask = cv2.resize(mask, (SIZE_Y, SIZE_X), interpolation = cv2.INTER_NEAREST) #Otherwise ground truth changes due to interpolation
train_masks.append(mask)
train_masks = np.array(train_masks)
print(f"train_images' shape : {train_images.shape} and train_masks' shape: {train_masks.shape} ")
train_images' shape : (1537, 256, 256, 3) and train_masks' shape: (1537, 256, 256, 3)
import random
import numpy as np
image_number = random.randint(0, train_images.shape[0])
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.imshow(train_images[image_number])
plt.subplot(122)
plt.imshow(train_masks[image_number])
plt.show()
image_number = random.randint(0, train_images.shape[0])
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.imshow(train_images[image_number])
plt.subplot(122)
plt.imshow(train_masks[image_number])
plt.show()
image_number = random.randint(0, train_images.shape[0])
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.imshow(train_images[image_number])
plt.subplot(122)
plt.imshow(train_masks[image_number])
plt.show()
def rgb_to_2D_label(label):
"""
Suply our labale masks as input in RGB format.
Replace pixels with specific RGB values ...
"""
label_seg = np.zeros(label.shape,dtype=np.uint8)
label_seg [np.all(label == Black,axis=-1)] = 0 # 0 for black color
label_seg [np.all(label==Red,axis=-1)] = 1 # 1 for red color
label_seg [np.all(label==Yellow,axis=-1)] = 2 # 2 for yellow color
label_seg = label_seg[:,:,0] #Just take the first channel, no need for all 3 channels
return label_seg
Black = np.array([0,0,0]) ## Color code for each classes
Red = np.array([255,0,0])
Yellow = np.array([255,255,0])
mask_labels = []
for i in range(train_masks.shape[0]):
label = rgb_to_2D_label(train_masks[i])
mask_labels.append(label)
mask_labels = np.array(mask_labels)
print("Mask labels shape :", mask_labels.shape)
mask_labels = np.expand_dims(mask_labels, axis=3)
print("Mask labels shape after expanding shape :", mask_labels.shape)
print("Unique labels in label dataset are: ", np.unique(mask_labels))
Mask labels shape : (1537, 256, 256) Mask labels shape after expanding shape : (1537, 256, 256, 1) Unique labels in label dataset are: [0 1 2]
image_number = random.randint(0, mask_labels.shape[0])
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.title("Mask")
plt.imshow(mask_labels[image_number])
plt.subplot(122)
plt.title("Image")
plt.imshow(train_images[image_number][:,:,0])
plt.show()
image_number = random.randint(0, mask_labels.shape[0])
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.title("Mask")
plt.imshow(mask_labels[image_number])
plt.subplot(122)
plt.title("Image")
plt.imshow(train_images[image_number][:,:,0])
plt.show()
from sklearn.utils.class_weight import compute_class_weight
weights = compute_class_weight(class_weight = 'balanced', classes = np.unique(np.ravel(mask_labels,order='C')),
y = np.ravel(mask_labels,order='C'))
print("Weight for Each class is :", weights)
Weight for Each class is : [1.37049319 1.32881155 0.65885549]
train_images.shape, mask_labels.shape
((1537, 256, 256, 3), (1537, 256, 256, 1))
n_classes = 3 # 3 classes
from keras.utils import to_categorical
labels_cat = to_categorical(mask_labels, num_classes=n_classes)
train_images.shape, labels_cat.shape
((1537, 256, 256, 3), (1537, 256, 256, 3))
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(train_images, labels_cat, test_size = 0.10, random_state = 42)
X_train.shape, X_test.shape, y_train.shape, y_test.shape
((1383, 256, 256, 3), (154, 256, 256, 3), (1383, 256, 256, 3), (154, 256, 256, 3))
print("Checking shape of labels_cat: ", labels_cat.shape)
print("Checking one hot encoding for one mask")
print("shape is :", labels_cat[1].shape)
labels_cat[1]
Checking shape of labels_cat: (1537, 256, 256, 3) Checking one hot encoding for one mask shape is : (256, 256, 3)
array([[[0., 1., 0.],
[0., 1., 0.],
[0., 1., 0.],
...,
[0., 0., 1.],
[0., 0., 1.],
[0., 0., 1.]],
[[0., 1., 0.],
[0., 1., 0.],
[0., 1., 0.],
...,
[0., 0., 1.],
[0., 0., 1.],
[0., 0., 1.]],
[[0., 1., 0.],
[0., 1., 0.],
[0., 1., 0.],
...,
[0., 0., 1.],
[0., 0., 1.],
[0., 0., 1.]],
...,
[[0., 1., 0.],
[0., 1., 0.],
[0., 1., 0.],
...,
[0., 1., 0.],
[0., 1., 0.],
[0., 1., 0.]],
[[0., 1., 0.],
[0., 1., 0.],
[0., 1., 0.],
...,
[0., 1., 0.],
[0., 1., 0.],
[0., 1., 0.]],
[[0., 1., 0.],
[0., 1., 0.],
[0., 1., 0.],
...,
[0., 1., 0.],
[0., 1., 0.],
[0., 1., 0.]]], dtype=float32)
model = multi_unet_model(n_classes=3, IMG_HEIGHT=256, IMG_WIDTH=256, IMG_CHANNELS=3)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()
Model: "model_6"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_7 (InputLayer) [(None, 256, 256, 3 0 []
)]
lambda_6 (Lambda) (None, 256, 256, 3) 0 ['input_7[0][0]']
conv2d_114 (Conv2D) (None, 256, 256, 16 448 ['lambda_6[0][0]']
)
dropout_54 (Dropout) (None, 256, 256, 16 0 ['conv2d_114[0][0]']
)
conv2d_115 (Conv2D) (None, 256, 256, 16 2320 ['dropout_54[0][0]']
)
max_pooling2d_24 (MaxPooling2D (None, 128, 128, 16 0 ['conv2d_115[0][0]']
) )
conv2d_116 (Conv2D) (None, 128, 128, 32 4640 ['max_pooling2d_24[0][0]']
)
dropout_55 (Dropout) (None, 128, 128, 32 0 ['conv2d_116[0][0]']
)
conv2d_117 (Conv2D) (None, 128, 128, 32 9248 ['dropout_55[0][0]']
)
max_pooling2d_25 (MaxPooling2D (None, 64, 64, 32) 0 ['conv2d_117[0][0]']
)
conv2d_118 (Conv2D) (None, 64, 64, 64) 18496 ['max_pooling2d_25[0][0]']
dropout_56 (Dropout) (None, 64, 64, 64) 0 ['conv2d_118[0][0]']
conv2d_119 (Conv2D) (None, 64, 64, 64) 36928 ['dropout_56[0][0]']
max_pooling2d_26 (MaxPooling2D (None, 32, 32, 64) 0 ['conv2d_119[0][0]']
)
conv2d_120 (Conv2D) (None, 32, 32, 128) 73856 ['max_pooling2d_26[0][0]']
dropout_57 (Dropout) (None, 32, 32, 128) 0 ['conv2d_120[0][0]']
conv2d_121 (Conv2D) (None, 32, 32, 128) 147584 ['dropout_57[0][0]']
max_pooling2d_27 (MaxPooling2D (None, 16, 16, 128) 0 ['conv2d_121[0][0]']
)
conv2d_122 (Conv2D) (None, 16, 16, 256) 295168 ['max_pooling2d_27[0][0]']
dropout_58 (Dropout) (None, 16, 16, 256) 0 ['conv2d_122[0][0]']
conv2d_123 (Conv2D) (None, 16, 16, 256) 590080 ['dropout_58[0][0]']
conv2d_transpose_24 (Conv2DTra (None, 32, 32, 128) 131200 ['conv2d_123[0][0]']
nspose)
concatenate_24 (Concatenate) (None, 32, 32, 256) 0 ['conv2d_transpose_24[0][0]',
'conv2d_121[0][0]']
conv2d_124 (Conv2D) (None, 32, 32, 128) 295040 ['concatenate_24[0][0]']
dropout_59 (Dropout) (None, 32, 32, 128) 0 ['conv2d_124[0][0]']
conv2d_125 (Conv2D) (None, 32, 32, 128) 147584 ['dropout_59[0][0]']
conv2d_transpose_25 (Conv2DTra (None, 64, 64, 64) 32832 ['conv2d_125[0][0]']
nspose)
concatenate_25 (Concatenate) (None, 64, 64, 128) 0 ['conv2d_transpose_25[0][0]',
'conv2d_119[0][0]']
conv2d_126 (Conv2D) (None, 64, 64, 64) 73792 ['concatenate_25[0][0]']
dropout_60 (Dropout) (None, 64, 64, 64) 0 ['conv2d_126[0][0]']
conv2d_127 (Conv2D) (None, 64, 64, 64) 36928 ['dropout_60[0][0]']
conv2d_transpose_26 (Conv2DTra (None, 128, 128, 32 8224 ['conv2d_127[0][0]']
nspose) )
concatenate_26 (Concatenate) (None, 128, 128, 64 0 ['conv2d_transpose_26[0][0]',
) 'conv2d_117[0][0]']
conv2d_128 (Conv2D) (None, 128, 128, 32 18464 ['concatenate_26[0][0]']
)
dropout_61 (Dropout) (None, 128, 128, 32 0 ['conv2d_128[0][0]']
)
conv2d_129 (Conv2D) (None, 128, 128, 32 9248 ['dropout_61[0][0]']
)
conv2d_transpose_27 (Conv2DTra (None, 256, 256, 16 2064 ['conv2d_129[0][0]']
nspose) )
concatenate_27 (Concatenate) (None, 256, 256, 32 0 ['conv2d_transpose_27[0][0]',
) 'conv2d_115[0][0]']
conv2d_130 (Conv2D) (None, 256, 256, 16 4624 ['concatenate_27[0][0]']
)
dropout_62 (Dropout) (None, 256, 256, 16 0 ['conv2d_130[0][0]']
)
conv2d_131 (Conv2D) (None, 256, 256, 16 2320 ['dropout_62[0][0]']
)
conv2d_132 (Conv2D) (None, 256, 256, 3) 51 ['conv2d_131[0][0]']
==================================================================================================
Total params: 1,941,139
Trainable params: 1,941,139
Non-trainable params: 0
__________________________________________________________________________________________________
X_train.shape, y_train.shape, X_test.shape, y_test.shape
((1383, 256, 256, 3), (1383, 256, 256, 3), (154, 256, 256, 3), (154, 256, 256, 3))
"""
model = multi_unet_model(n_classes=3, IMG_HEIGHT=256, IMG_WIDTH=256, IMG_CHANNELS=3)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()
"""
"""
history = model.fit(X_train, y_train,
batch_size = 16,
verbose=1,
epochs=50,
validation_data=(X_test, y_test),
#class_weight=weights,
shuffle=False) # Lets train for now without giving class weight
"""
model = multi_unet_model(n_classes=3, IMG_HEIGHT=256, IMG_WIDTH=256, IMG_CHANNELS=3)
from keras.models import load_model
model.load_weights("/Users/bimle/Desktop/Application/AIRA_Matrix/models/instance_seg_epoch_50_accuracy_91_3classes_RGB_img_mask.hdf5")
import cv2
train_loss = cv2.imread("/Users/bimle/Desktop/Application/AIRA_Matrix/training_loss.png")
train_loss = cv2.cvtColor(train_loss, cv2.COLOR_BGR2RGB)
train_acc = cv2.imread("/Users/bimle/Desktop/Application/AIRA_Matrix/training_accuracy.png")
train_acc = cv2.cvtColor(train_acc, cv2.COLOR_BGR2RGB)
import matplotlib.pyplot as plt
plt.figure(figsize=(60, 30))
plt.subplot(121)
plt.title("Training loss")
plt.imshow(train_loss)
<matplotlib.image.AxesImage at 0x7fe65c281630>
plt.figure(figsize=(60, 30))
plt.subplot(122)
plt.title("Training Accuracy")
plt.imshow(train_acc)
plt.show()
val_img1 = cv2.imread("/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/Valid_Image/val_img1.png")
val_img1 = cv2.cvtColor(val_img1, cv2.COLOR_BGR2RGB)
val_mask1 = cv2.imread("/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/Valid_Mask/val_mask1.png")
val_mask1 = cv2.cvtColor(val_mask1, cv2.COLOR_BGR2RGB)
print(f"val image shape : {val_img1.shape} and mask shape: {val_mask1.shape}")
val image shape : (18432, 6656, 3) and mask shape: (18432, 6656, 3)
plt.figure(figsize=(30, 30))
plt.subplot(121)
plt.title("Validation Image")
plt.imshow(val_img1)
plt.subplot(122)
plt.title("Validation Mask")
plt.imshow(val_mask1)
plt.show()
patch_size = 256
patches_img = patchify(val_img1, (patch_size, patch_size, 3), step=patch_size) #Step=256 for 256 patches means no overlap
patches_img = patches_img[:,:,0,:,:,:]
patched_prediction = []
for i in range(patches_img.shape[0]):
for j in range(patches_img.shape[1]):
single_patch_img = patches_img[i,j,:,:,:]
single_patch_img = np.expand_dims(single_patch_img, axis=0)
pred = model.predict(single_patch_img)
pred = np.argmax(pred, axis=3)
pred = pred[0, :,:]
patched_prediction.append(pred)
patched_prediction = np.array(patched_prediction)
patched_prediction = np.reshape(patched_prediction, [patches_img.shape[0], patches_img.shape[1],
patches_img.shape[2], patches_img.shape[3]])
pred_mask_img1 = unpatchify(patched_prediction, (val_img1.shape[0], val_img1.shape[1]))
1/1 [==============================] - 0s 411ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 146ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 108ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 114ms/step 1/1 [==============================] - 0s 111ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 134ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 94ms/step 1/1 [==============================] - 0s 94ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 116ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 97ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 107ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 71ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 94ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 71ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 71ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 114ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 71ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 112ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 97ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 94ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 94ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 94ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step
plt.figure(figsize=(30, 30))
plt.subplot(121)
plt.title("Validation Mask")
plt.imshow(val_mask1)
plt.subplot(122)
plt.title("Predicted Mask") # This mask is in gray scale, Later i will convert it into rgb.
plt.imshow(pred_mask_img1)
plt.show()
def label_to_rgb(predicted_image):
Black = np.array([0,0,0]) ## Color code for each classes
Red = np.array([255,0,0])
Yellow = np.array([255,255,0])
segmented_img_rgb = np.empty((predicted_image.shape[0], predicted_image.shape[1], 3))
segmented_img_rgb[(predicted_image == 0)] = Black
segmented_img_rgb[(predicted_image == 1)] = Red
segmented_img_rgb[(predicted_image == 2)] = Yellow
segmented_img_rgb = segmented_img_rgb.astype(np.uint8)
return(segmented_img_rgb)
pred_mask_img1_rgb = label_to_rgb(pred_mask_img1)
plt.figure(figsize=(30, 30))
plt.subplot(121)
plt.title("Validation Mask")
plt.imshow(val_mask1)
plt.subplot(122)
plt.title("Predicted Mask in RGB") # This mask is in gray scale, Later i will convert it into rgb.
plt.imshow(pred_mask_img1_rgb)
plt.show()
plt.figure(figsize=(30, 30))
plt.subplot(131)
plt.title("Validation Image")
plt.imshow(val_img1)
plt.subplot(132)
plt.title("Validation Mask")
plt.imshow(val_mask1)
plt.subplot(133)
plt.title("Predicted Mask in RGB") # This mask is in gray scale, Later i will convert it into rgb.
plt.imshow(pred_mask_img1_rgb)
plt.show()
val_img2 = cv2.imread("/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/Valid_Image/val_img2.png")
val_img2 = cv2.cvtColor(val_img2, cv2.COLOR_BGR2RGB)
val_mask2 = cv2.imread("/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/Valid_Mask/val_mask2.png")
val_mask2 = cv2.cvtColor(val_mask2, cv2.COLOR_BGR2RGB)
print(f"val image shape : {val_img2.shape} and mask shape: {val_mask2.shape}")
val image shape : (16896, 3584, 3) and mask shape: (16896, 3584, 3)
patch_size = 256
patches_img = patchify(val_img2, (patch_size, patch_size, 3), step=patch_size) #Step=256 for 256 patches means no overlap
patches_img = patches_img[:,:,0,:,:,:]
patched_prediction = []
for i in range(patches_img.shape[0]):
for j in range(patches_img.shape[1]):
single_patch_img = patches_img[i,j,:,:,:]
single_patch_img = np.expand_dims(single_patch_img, axis=0)
pred = model.predict(single_patch_img)
pred = np.argmax(pred, axis=3)
pred = pred[0, :,:]
patched_prediction.append(pred)
patched_prediction2 = np.array(patched_prediction)
patched_prediction2 = np.reshape(patched_prediction2, [patches_img.shape[0], patches_img.shape[1],
patches_img.shape[2], patches_img.shape[3]])
pred_mask_img2 = unpatchify(patched_prediction2, (val_img2.shape[0], val_img2.shape[1]))
1/1 [==============================] - 0s 144ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 108ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 108ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 115ms/step 1/1 [==============================] - 0s 112ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 110ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 94ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 108ms/step 1/1 [==============================] - 0s 113ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 108ms/step 1/1 [==============================] - 0s 108ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 107ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 121ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 107ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 94ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 119ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 118ms/step 1/1 [==============================] - 0s 110ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 107ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 97ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 123ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 97ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 108ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 107ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 71ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 120ms/step 1/1 [==============================] - 0s 118ms/step 1/1 [==============================] - 0s 116ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 94ms/step 1/1 [==============================] - 0s 110ms/step 1/1 [==============================] - 0s 107ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 112ms/step 1/1 [==============================] - 0s 115ms/step 1/1 [==============================] - 0s 126ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 132ms/step 1/1 [==============================] - 0s 149ms/step 1/1 [==============================] - 0s 137ms/step 1/1 [==============================] - 0s 113ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 117ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 94ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 107ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 97ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 95ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 94ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 99ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 114ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 71ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 71ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 102ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 108ms/step 1/1 [==============================] - 0s 107ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 92ms/step 1/1 [==============================] - 0s 93ms/step 1/1 [==============================] - 0s 105ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 103ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 96ms/step 1/1 [==============================] - 0s 98ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 100ms/step 1/1 [==============================] - 0s 106ms/step 1/1 [==============================] - 0s 104ms/step 1/1 [==============================] - 0s 97ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 101ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 109ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 89ms/step 1/1 [==============================] - 0s 72ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 82ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 91ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 90ms/step 1/1 [==============================] - 0s 83ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 88ms/step 1/1 [==============================] - 0s 86ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 85ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 73ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 79ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 84ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 81ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 77ms/step 1/1 [==============================] - 0s 74ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 78ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 80ms/step 1/1 [==============================] - 0s 76ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 75ms/step 1/1 [==============================] - 0s 87ms/step 1/1 [==============================] - 0s 78ms/step
pred_mask_img2_rgb = label_to_rgb(pred_mask_img2) ## Converting label to rgb
plt.figure(figsize=(30, 30))
plt.subplot(131)
plt.title("Validation Image")
plt.imshow(val_img2)
plt.subplot(132)
plt.title("Validation Mask")
plt.imshow(val_mask2)
plt.subplot(133)
plt.title("Predicted Mask in RGB") # This mask is in gray scale, Later i will convert it into rgb.
plt.imshow(pred_mask_img2_rgb)
plt.show()
from keras.metrics import MeanIoU
n_classes = 3
IOU_keras = MeanIoU(num_classes=n_classes)
img1_mask_cat = rgb_to_2D_label(val_mask1) # y_true
img1_mask_cat.shape # y_true
(18432, 6656)
np.unique(img1_mask_cat) # y_true
array([0, 1, 2], dtype=uint8)
print(f"pred_mask_img1 unique value: {np.unique(pred_mask_img1)} and shape is {pred_mask_img1.shape}")
pred_mask_img1 unique value: [0 1 2] and shape is (18432, 6656)
IOU_keras.update_state(img1_mask_cat, pred_mask_img1)
print("Mean IoU =", IOU_keras.result().numpy())
Mean IoU = 0.8095667
values = np.array(IOU_keras.get_weights()).reshape(n_classes, n_classes)
print(values)
[[1.6777216e+07 0.0000000e+00 1.8847100e+05] [4.7700000e+02 4.3050780e+06 3.0587300e+05] [2.7622680e+06 9.2378900e+05 1.6777216e+07]]
total = np.sum(values)
print(total)
42040388.0
Black_IoU = values[0,0]/(values[0,0] + values[0,1] + values[0,2])
Red_IoU = values[1,1]/(values[1,1] + values[1,0] + values[1,2])
Yellow_IoU = values[2,2]/(values[2,2] + values[2,0] + values[2,1])
print("IoU for Black is: ", Black_IoU)
print("IoU for Red is: ", Red_IoU)
print("IoU for Yellow is: ", Yellow_IoU)
IoU for Black is: 0.988891 IoU for Red is: 0.9335672 IoU for Yellow is: 0.81986964
img2_mask_cat = rgb_to_2D_label(val_mask2)
IOU_keras.update_state(img2_mask_cat, pred_mask_img2)
print("Mean IoU =", IOU_keras.result().numpy())
values = np.array(IOU_keras.get_weights()).reshape(n_classes, n_classes)
print(values)
Black_IoU = values[0,0]/(values[0,0] + values[0,1] + values[0,2])
Red_IoU = values[1,1]/(values[1,1] + values[1,0] + values[1,2])
Yellow_IoU = values[2,2]/(values[2,2] + values[2,0] + values[2,1])
print("IoU for Black is: ", Black_IoU)
print("IoU for Red is: ", Red_IoU)
print("IoU for Yellow is: ", Yellow_IoU)
Mean IoU = 0.82209796 [[3.3554432e+07 4.6186000e+04 1.3474300e+06] [9.6800000e+02 1.4181677e+07 9.7629900e+05] [4.1613430e+06 1.7723360e+06 2.8123358e+07]] IoU for Black is: 0.9601232 IoU for Red is: 0.935532 IoU for Yellow is: 0.82577235
def dice_coef(y_true, y_pred):
y_true_f = y_true.flatten()
y_pred_f = y_pred.flatten()
intersection = np.sum(y_true_f * y_pred_f)
smooth = 0.0001
return (2. * intersection + smooth) / (np.sum(y_true_f) + np.sum(y_pred_f) + smooth)
def dice_coef_multilabel(y_true, y_pred, numLabels):
dice_list = []
for index in range(numLabels):
dice = 0
dice = dice_coef(y_true[:,:,index], y_pred[:,:,index])
dice_list.append(dice)
return dice_list
img1_mask_cat.shape, pred_mask_img1.shape, n_classes
((18432, 6656), (18432, 6656), 3)
img1_mask_cat_oneHot = to_categorical(img1_mask_cat, num_classes=n_classes)
pred_mask_img1_oneHot = to_categorical(pred_mask_img1, num_classes=n_classes)
print(f"img1_mask_cat_oneHot : {img1_mask_cat_oneHot.shape} and pred_mask_img1_oneHot: {pred_mask_img1_oneHot.shape}")
img1_mask_cat_oneHot : (18432, 6656, 3) and pred_mask_img1_oneHot: (18432, 6656, 3)
dice_list_val_img1 = dice_coef_multilabel(img1_mask_cat_oneHot,pred_mask_img1_oneHot,n_classes)
print(dice_list_val_img1)
[0.9848813920738788, 0.8749896217554962, 0.896466217247955]
img2_mask_cat = rgb_to_2D_label(val_mask2)
img2_mask_cat_oneHot = to_categorical(img2_mask_cat, num_classes=n_classes)
pred_mask_img2_oneHot = to_categorical(pred_mask_img2, num_classes=n_classes)
print(f"img2_mask_cat_oneHot : {img2_mask_cat_oneHot.shape} and pred_mask_img2_oneHot: {pred_mask_img2_oneHot.shape}")
img2_mask_cat_oneHot : (16896, 3584, 3) and pred_mask_img2_oneHot: (16896, 3584, 3)
dice_list_val_img1 = dice_coef_multilabel(img2_mask_cat_oneHot,pred_mask_img2_oneHot,n_classes)
print(dice_list_val_img1)
[0.9643297399154721, 0.9265602906877212, 0.8476983253802615]
## This is the results generated :
Dice_matrix = [[ " Black ", " Red ", " Yellow ", ' Avg Dice '],
['Img1 ' ,0.9848813920738788, 0.8749896217554962, 0.896466217247955, 0.918],
['Img2 ' ,0.9643297399154721, 0.9265602906877212, 0.8476983253802615, 0.912],
["Avg Dice", 0.974, 0.9, 0.871, 0.915 ],
]
from sklearn.preprocessing import LabelEncoder
labelencoder = LabelEncoder()
n, h, w = train_masks.shape
train_masks_reshaped = train_masks.reshape(-1,1) ## Flattening the images as encoding works only on 1-D array
print(n,h,w)
print(train_masks_reshaped.shape)
5680 256 256 (372244480, 1)
train_masks_reshaped_encoded = labelencoder.fit_transform(train_masks_reshaped)
train_masks_reshaped_encoded.shape
(372244480,)
train_masks_encoded_original_shape = train_masks_reshaped_encoded.reshape(n, h, w)
train_masks_encoded_original_shape.shape
(5680, 256, 256)
np.unique(train_masks_encoded_original_shape)
array([0, 1, 2])
train_images = np.expand_dims(train_images, axis=3)
train_images.shape
(5680, 256, 256, 1)
train_masks_input = np.expand_dims(train_masks_encoded_original_shape, axis=3)
train_masks_input.shape
(5680, 256, 256, 1)
from sklearn.model_selection import train_test_split
X1, X_test, y1, y_test = train_test_split(train_images, train_masks_input, test_size = 0.10, random_state = 0)
#Further split training data t a smaller subset for quick testing of models
X_train, X_do_not_use, y_train, y_do_not_use = train_test_split(X1, y1, test_size = 0.2, random_state = 0)
print("Class values in the dataset are ... ", np.unique(y_train)) # 0 is the background/few unlabeled
Class values in the dataset are ... [0 1 2]
X1.shape, X_test.shape, y1.shape, y_test.shape
((5112, 256, 256, 1), (568, 256, 256, 1), (5112, 256, 256, 1), (568, 256, 256, 1))
X_train.shape, X_do_not_use.shape, y_train.shape, y_do_not_use.shape
((4089, 256, 256, 1), (1023, 256, 256, 1), (4089, 256, 256, 1), (1023, 256, 256, 1))
from keras.utils import to_categorical
train_masks_cat = to_categorical(y_train, num_classes=n_classes)
y_train_cat = train_masks_cat.reshape((y_train.shape[0], y_train.shape[1], y_train.shape[2], n_classes))
test_masks_cat = to_categorical(y_test, num_classes=n_classes)
y_test_cat = test_masks_cat.reshape((y_test.shape[0], y_test.shape[1], y_test.shape[2], n_classes))
IMG_HEIGHT = X_train.shape[1]
IMG_WIDTH = X_train.shape[2]
IMG_CHANNELS = X_train.shape[3]
print(IMG_HEIGHT,IMG_WIDTH,IMG_CHANNELS)
256 256 1
model = multi_unet_model()
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()
Model: "model_1"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_2 (InputLayer) [(None, 256, 256, 1 0 []
)]
lambda_1 (Lambda) (None, 256, 256, 1) 0 ['input_2[0][0]']
conv2d_19 (Conv2D) (None, 256, 256, 16 160 ['lambda_1[0][0]']
)
dropout_9 (Dropout) (None, 256, 256, 16 0 ['conv2d_19[0][0]']
)
conv2d_20 (Conv2D) (None, 256, 256, 16 2320 ['dropout_9[0][0]']
)
max_pooling2d_4 (MaxPooling2D) (None, 128, 128, 16 0 ['conv2d_20[0][0]']
)
conv2d_21 (Conv2D) (None, 128, 128, 32 4640 ['max_pooling2d_4[0][0]']
)
dropout_10 (Dropout) (None, 128, 128, 32 0 ['conv2d_21[0][0]']
)
conv2d_22 (Conv2D) (None, 128, 128, 32 9248 ['dropout_10[0][0]']
)
max_pooling2d_5 (MaxPooling2D) (None, 64, 64, 32) 0 ['conv2d_22[0][0]']
conv2d_23 (Conv2D) (None, 64, 64, 64) 18496 ['max_pooling2d_5[0][0]']
dropout_11 (Dropout) (None, 64, 64, 64) 0 ['conv2d_23[0][0]']
conv2d_24 (Conv2D) (None, 64, 64, 64) 36928 ['dropout_11[0][0]']
max_pooling2d_6 (MaxPooling2D) (None, 32, 32, 64) 0 ['conv2d_24[0][0]']
conv2d_25 (Conv2D) (None, 32, 32, 128) 73856 ['max_pooling2d_6[0][0]']
dropout_12 (Dropout) (None, 32, 32, 128) 0 ['conv2d_25[0][0]']
conv2d_26 (Conv2D) (None, 32, 32, 128) 147584 ['dropout_12[0][0]']
max_pooling2d_7 (MaxPooling2D) (None, 16, 16, 128) 0 ['conv2d_26[0][0]']
conv2d_27 (Conv2D) (None, 16, 16, 256) 295168 ['max_pooling2d_7[0][0]']
dropout_13 (Dropout) (None, 16, 16, 256) 0 ['conv2d_27[0][0]']
conv2d_28 (Conv2D) (None, 16, 16, 256) 590080 ['dropout_13[0][0]']
conv2d_transpose_4 (Conv2DTran (None, 32, 32, 128) 131200 ['conv2d_28[0][0]']
spose)
concatenate_4 (Concatenate) (None, 32, 32, 256) 0 ['conv2d_transpose_4[0][0]',
'conv2d_26[0][0]']
conv2d_29 (Conv2D) (None, 32, 32, 128) 295040 ['concatenate_4[0][0]']
dropout_14 (Dropout) (None, 32, 32, 128) 0 ['conv2d_29[0][0]']
conv2d_30 (Conv2D) (None, 32, 32, 128) 147584 ['dropout_14[0][0]']
conv2d_transpose_5 (Conv2DTran (None, 64, 64, 64) 32832 ['conv2d_30[0][0]']
spose)
concatenate_5 (Concatenate) (None, 64, 64, 128) 0 ['conv2d_transpose_5[0][0]',
'conv2d_24[0][0]']
conv2d_31 (Conv2D) (None, 64, 64, 64) 73792 ['concatenate_5[0][0]']
dropout_15 (Dropout) (None, 64, 64, 64) 0 ['conv2d_31[0][0]']
conv2d_32 (Conv2D) (None, 64, 64, 64) 36928 ['dropout_15[0][0]']
conv2d_transpose_6 (Conv2DTran (None, 128, 128, 32 8224 ['conv2d_32[0][0]']
spose) )
concatenate_6 (Concatenate) (None, 128, 128, 64 0 ['conv2d_transpose_6[0][0]',
) 'conv2d_22[0][0]']
conv2d_33 (Conv2D) (None, 128, 128, 32 18464 ['concatenate_6[0][0]']
)
dropout_16 (Dropout) (None, 128, 128, 32 0 ['conv2d_33[0][0]']
)
conv2d_34 (Conv2D) (None, 128, 128, 32 9248 ['dropout_16[0][0]']
)
conv2d_transpose_7 (Conv2DTran (None, 256, 256, 16 2064 ['conv2d_34[0][0]']
spose) )
concatenate_7 (Concatenate) (None, 256, 256, 32 0 ['conv2d_transpose_7[0][0]',
) 'conv2d_20[0][0]']
conv2d_35 (Conv2D) (None, 256, 256, 16 4624 ['concatenate_7[0][0]']
)
dropout_17 (Dropout) (None, 256, 256, 16 0 ['conv2d_35[0][0]']
)
conv2d_36 (Conv2D) (None, 256, 256, 16 2320 ['dropout_17[0][0]']
)
conv2d_37 (Conv2D) (None, 256, 256, 3) 51 ['conv2d_36[0][0]']
==================================================================================================
Total params: 1,940,851
Trainable params: 1,940,851
Non-trainable params: 0
__________________________________________________________________________________________________
history = model.fit(X_train, y_train_cat,
batch_size = 16,
verbose=1,
epochs=50,
validation_data=(X_test, y_test_cat),
#class_weight=class_weights,
shuffle=False)
from sklearn.utils import class_weight
class_weights = class_weight.compute_class_weight('balanced',
np.unique(train_masks_reshaped_encoded),
train_masks_reshaped_encoded)
print("Class weights are...:", class_weights)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Input In [129], in <cell line: 2>() 1 from sklearn.utils import class_weight ----> 2 class_weights = class_weight.compute_class_weight('balanced', 3 np.unique(train_masks_reshaped_encoded), 4 train_masks_reshaped_encoded) 5 print("Class weights are...:", class_weights) TypeError: compute_class_weight() takes 1 positional argument but 3 were given
"""
img_size = (512,512)
def trainImageMaskAug(train_path,image_folder,mask_folder,aug_dict,image_color_mode = "rgb",
mask_color_mode = "rgb",image_save_prefix = "aug_image",mask_save_prefix = "aug_mask",save_to_dir = None,target_size = img_size,seed = 1):
'''
can generate image and mask at the same time
use the same seed for image_datagen and mask_datagen to ensure the transformation for image and mask is the same
if you want to visualize the results of generator, set save_to_dir = "your path"
'''
image_datagen = ImageDataGenerator(**aug_dict)
mask_datagen = ImageDataGenerator(**aug_dict)
image_generator = image_datagen.flow_from_directory(
train_path,
color_mode = image_color_mode,
target_size = target_size,
save_to_dir = save_to_dir,
save_prefix = image_save_prefix,
class_mode=None,
seed = seed)
mask_generator = mask_datagen.flow_from_directory(
train_path,
color_mode = mask_color_mode,
target_size = target_size,
save_to_dir = save_to_dir,
save_prefix = mask_save_prefix,
class_mode=None,
seed = seed)
"""
original_data_dir = "/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/"
# resizing image to 512*512
save_path = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/train_image_512/"
if not os.path.exists(save_path):
os.makedirs(save_path)
images = os.listdir(original_data_dir+'/Train_Image/')
numimg = len(images)
print(numimg)
for num1 in range(numimg):
path2 = original_data_dir +'/Train_Image/'+ images[num1]
print(path2)
img = cv2.imread(path2)
img = cv2.resize(img, (512, 512), interpolation = cv2.INTER_LINEAR)
path = save_path + images[num1]
cv2.imwrite(path, img)
5 /Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data//Train_Image/e96abe7cf94b26fff31bc9d9ab8820f5.png /Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data//Train_Image/c614dc18ffa37f8007c2aead39e65342.png /Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data//Train_Image/111b574b0f3bed1be6764860d7ea7adf.png /Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data//Train_Image/775d39466b474d54ae714215034c5a83.png /Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data//Train_Image/5456189d4e5c15a790a868b70fd25625.png
# Doing Image augmentation to generate more sample as currently only having 5 images.
save_path = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/aug_image_512/"
#img_source_path = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/train_image_512/"
data_gen_args = dict(rotation_range=0.3,
rescale=1./255,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.1,
zoom_range=[0.7,1],
horizontal_flip=True,
vertical_flip=True,
fill_mode='nearest')
PATH='/Users/bimle/Desktop/Desktop/AIRA_Matrix/'
save_to_dir = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/aug_image_512/"
trainImageMaskAug(PATH,"train_image_512","train_mask_512",
data_gen_args,mask_save_prefix = "aug_mask",save_to_dir = save_to_dir,target_size = img_size,seed = 1)
Found 10 images belonging to 4 classes. Found 10 images belonging to 4 classes.
SIZE_X = 256
SIZE_Y = 256
n_classes=3 #Number of classes for segmentation
train_img_path = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/train_image_512/"
train_mask_path = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/train_mask_512/"
#Capture training image info as a list
train_images = []
for img_path in glob.glob(os.path.join(train_img_path, "*.png")):
img = cv2.imread(img_path,0)
#print(img.shape)
#img = cv2.resize(img, (SIZE_Y, SIZE_X))
train_images.append(img)
#Convert list to array for machine learning processing
train_images = np.array(train_images)
#Capture mask/label info as a list
train_masks = []
for mask_path in glob.glob(os.path.join(train_mask_path, "*.png")):
mask = cv2.imread(mask_path,0)
#mask = cv2.resize(mask, (SIZE_Y, SIZE_X), interpolation = cv2.INTER_NEAREST) #Otherwise ground truth changes due to interpolation
train_masks.append(mask)
train_masks = np.array(train_masks)
# This is original mask image
train_mask_path = original_data_dir + "/Train_Mask/"
for mask_path in glob.glob(os.path.join(train_mask_path, "*.png")):
mask = cv2.imread(mask_path)
plt.imshow(mask)
plt.show()
print(f"Shape of original mask is :{mask.shape}")
print(f"Unique value in mask shape is {np.unique(mask)}")
Shape of original mask is :(7424, 2816, 3) Unique value in mask shape is [ 0 255]
Shape of original mask is :(9216, 10496, 3) Unique value in mask shape is [ 0 255]
Shape of original mask is :(14592, 12800, 3) Unique value in mask shape is [ 0 255]
Shape of original mask is :(18432, 3584, 3) Unique value in mask shape is [ 0 255]
Shape of original mask is :(6144, 3840, 3) Unique value in mask shape is [ 0 255]
img_dim = [7424, 2816,9216, 10496,14592, 12800,18432, 3584,6144, 3840]
img_dim_div_check = [i/256 for i in img_dim]
img_dim_div_check
[29.0, 11.0, 36.0, 41.0, 57.0, 50.0, 72.0, 14.0, 24.0, 15.0]
# Do above for the resized mask image
train_mask_resized_path = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/train_mask_512/"
for mask_path in glob.glob(os.path.join(train_mask_resized_path, "*.png")):
mask = cv2.imread(mask_path)
print(f"Shape of resized mask is :{mask.shape}")
print(f"Unique value in resized mask is {np.unique(mask)}")
Shape of resized mask is :(512, 512, 3) Unique value in resized mask is [ 0 16 48 64 112 143 191 207 239 255] Shape of resized mask is :(512, 512, 3) Unique value in resized mask is [ 0 64 191 255] Shape of resized mask is :(512, 512, 3) Unique value in resized mask is [ 0 64 191 255] Shape of resized mask is :(512, 512, 3) Unique value in resized mask is [ 0 128 255] Shape of resized mask is :(512, 512, 3) Unique value in resized mask is [ 0 32 64 96 127 128 159 191 223 255]
print(f"train_images shape: {train_images.shape} and max value is: {train_images.max()}")
print(f"train_mask shape: {train_masks.shape} and max value is: {train_masks.max()}")
train_images shape: (5, 512, 512) and max value is: 255 train_mask shape: (5, 512, 512) and max value is: 225
# This is original mask image
train_mask_path = original_data_dir + "/Train_Mask/"
for mask_path in glob.glob(os.path.join(train_mask_path, "*.png")):
print(mask_path)
mask = cv2.imread(mask_path, cv2.IMREAD_COLOR)
plt.imshow(mask)
plt.show()
print(f"Shape of original mask is :{mask.shape}")
print(f"Unique value in mask shape is {np.unique(mask)}")
break
/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data//Train_Mask/img1_mask.png
Shape of original mask is :(14592, 12800, 3) Unique value in mask shape is [ 0 255]
image_rgb = cv2.cvtColor(mask, cv2.COLOR_BGR2RGB)
plt.imshow(image_rgb)
<matplotlib.image.AxesImage at 0x7fad77941ab0>
train_mask_path = original_data_dir + "/Train_Mask/"
for mask_path in glob.glob(os.path.join(train_mask_path, "*.png")):
print(mask_path)
mask = cv2.imread(mask_path, cv2.IMREAD_COLOR)
plt.imshow(mask)
plt.show()
print(f"Shape of original mask is :{mask.shape}")
print(f"Unique value in mask shape is {np.unique(mask)}")
break
14592/256
57.0
12800/256
50.0
from sklearn.preprocessing import LabelEncoder
labelencoder = LabelEncoder()
n, h, w = train_masks.shape
print(n,h,w)
5 512 512
np.unique(train_masks)
array([ 0, 14, 19, 28, 38, 42, 47, 56, 57, 66, 76, 85, 95,
99, 104, 113, 126, 132, 140, 141, 150, 151, 160, 169, 183, 188,
197, 207, 211, 216, 225], dtype=uint8)
train_masks_reshaped = train_masks.reshape(-1,1)
train_masks_reshaped.shape
(1310720, 1)
train_masks_reshaped_encoded = labelencoder.fit_transform(train_masks_reshaped)
train_masks_reshaped_encoded.shape
(1310720,)
train_masks_encoded_original_shape = train_masks_reshaped_encoded.reshape(n, h, w)
train_masks_encoded_original_shape.shape
(5, 512, 512)
np.unique(train_masks_encoded_original_shape)
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30])